草图编辑器 Sample详情

最后更新时间:2019年6月17日

为了方便用户交互式绘制图形,封装了交互编辑图形(即交互绘制图形、选择修改与删除图形)的接口,具有简便、易用、高效、实用性强的特点。

1 实例化草图编辑器

在地图显示之后,利用地图视图对象实例化草图编辑器。

//草图编辑器
SketchEditor sketchEditor=new SketchEditor(mapView);

说明:草图编辑器绘制部分图形或移动节点时,默认具有震动的效果,需要为程序添加震动权限,在程序清单文件AndroidManifest.xml文件中添加以下权限标签。

<!-- 允许程序震动,用于草图编辑器功能 -->
<uses-permission android:name="android.permission.VIBRATE" />

2 图形绘制

草图编辑器提供多种图形的绘制,调用start()方法传入对应类型后即可在地图上进行图形绘制。SketchEditor支持绘制的图形类型如下表所示:

字段 说明
SketchDataType.POINT
SketchDataType.MULTIPOINT 多点
SketchDataType.POLYLINE 线(普通折线)
SketchDataType.FREEHAND_LINE 流状线
SketchDataType.POLYGON 区(普通折线区)
SketchDataType.FREEHAND_POLYGON 流状区
sketchEditor.start(SketchDataType.POINT);
sketchEditor.start(SketchDataType.MULTIPOINT);
sketchEditor.start(SketchDataType.POLYLINE);
sketchEditor.start(SketchDataType.FREEHAND_LINE);
sketchEditor.start(SketchDataType.POLYGON);
sketchEditor.start(SketchDataType.FREEHAND_POLYGON);

3 图形编辑

绘制了各种图形之后,一般可以通过手势交互来拖动图形的节点来修改形状。同时提供了下列多种图形编辑的功能,来辅助绘制想要的图形效果。

sketchEditor.addVertex(12735784, 3563488);//给一个固定点(地图坐标)
sketchEditor.deleteSelectedVertex();
sketchEditor.undo();
sketchEditor.redo();
sketchEditor.clearGeometry();
sketchEditor.stop();


上述功能除外,草图编辑器工具还具备其他许多实用的功能,这些功能对于实际项目应用来说具有显著的作用,可参考草图交互式要素编辑示例。

4 图形修改

在绘制点、多点、普通折线、普通折线区过程中,我们可以通过手势交互操作来改变图形的形状,由于这些图形是由用户点击地图的坐标点构成的,用户可以对这些顶点进行拖动,来修整图形,达到想要的效果。同时,在绘制图形或者移动顶点时,长按地图可以开启内置放大镜功能,从而实现更精确的图形绘制。

在野外数据采集工作中,一般情况下,图形很难一次绘制就达到想要的效果,所以草图编辑器提供的这种图形修改、调整的功能对此来说能发挥很大的作用,这也是草图编辑器在实际应用中的一个典型的场景。

5 自定义样式

调用草图编辑器工具绘制的图形,都具有默认的样式,用户也可以对其进行修改,包括顶点样式、线中点样式、选中点样式、线样式、填充样式、文字样式、是否震动、是否计算距离、是否计算面积等诸多功能。

//草图编辑器样式对象
SketchStyle sketchStyle=new SketchStyle();
//根据需要设置各种样式,不一一展开
//设置样式
sketchEditor.setSketchStyle(sketchStyle);

6 实地距离、面积

绘制图形时,默认自动显示线段的长度、区的面积大小等信息,这些信息是根据默认的空间参考系进行计算的,可能与实际显示的地图的参考系不一致,所以可以为草图编辑器工具设置空间参考系,此时线段长度、区面积都是根据此参考系计算而来的。

//从地图中获取空间参考系,传递给草图编辑器对象
sketchEditor.setSRS(mapView.getMap().getSRSInfo());

7 获取几何

图形绘制之后,在视图中显示的仅仅只是绘制的效果,如果要将绘制的图形生成其他的成果,例如将绘制的图形保存为地理要素,就可以采用如下方法获取编辑的几何对象Geometry再进行下一步的操作。

Geometry geometry = sketchEditor.getGeometry();

8 重新编辑

不仅是绘制新的图形,草图编辑器支持对已有的要素进行编辑的功能。调用此功能后,已有的几何对象在界面中会切换为草图编辑的状态,也即是支持用户随意拖动节点、进行加点、删点、撤销、重做等功能。

//首先获取已有的几何对象geometry,然后进行重新编辑
sketchEditor.start(geometry);

草图编辑器实现效果如下图所示:

草图编辑器1.jpg 草图编辑器2.jpg 草图编辑器3.jpg